import java.util.Iterator;
import java.util.LinkedList;

public class MyHashSet {
    private LinkedList[] data;//链表类型的数组
    private static final int BASE=1024;//数组的初始长度
    public MyHashSet() {
        //给数组开辟空间
        data=new LinkedList[BASE];
        //每一个数组元素是一个链表
        for(int i=0;i<BASE;i++){
            data[i]=new LinkedList<Integer>();
        }
    }
    public void add(int key) {

        int index=hash(key);
        Iterator<Integer> iterator=data[index].iterator();
        while(iterator.hasNext()){
            Integer elements=iterator.next();
            if(elements==key){
                return;
            }
        }
        data[index].addLast(key);
    }
    public void remove(int key) {
        int index=hash(key);
        Iterator<Integer> iterator=data[index].iterator();

        while(iterator.hasNext()){
            Integer element=iterator.next();
            if(element==key){
                data[index].remove((Integer)key);//移除时记得int类型转换为Integer
                return ;
            }
        }


    }

    public boolean contains(int key) {
        int index=key%BASE;
        Iterator<Integer> iterator=data[index].iterator();
        while(iterator.hasNext()){
            Integer elements=iterator.next();
            if(elements==key){
                return true;
            }
        }
        return false;
    }

    //除留余数法得到hash其对应的下表
    private static int hash(int key){
        int res=key%BASE;
        return res;
    }
}